package gui;
import ge.escola.Disciplina;
import ge.escola.Sala;
import ge.util.Validadores;

import java.awt.Color;
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.LayoutStyle;
import javax.swing.SwingConstants;
import javax.swing.border.BevelBorder;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * cadastraDisciplinaPanel.java
 *
 * Created on 05/11/2010, 21:53:41
 */


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
/**
 *
 * @author
 */
public class CadastraDisciplinaPanel extends javax.swing.JPanel {
	
    private String nomeDisciplina;
	int cargaHoraria;
    private int codigoSala;
    private Sala sala;
    private boolean flag = true;
    Color verde = new Color(0,150,0);

    /** Creates new form cadastraDisciplinaPanel */
    public CadastraDisciplinaPanel() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        caixaNome = new javax.swing.JTextField();
        caixaCodigoSala = new javax.swing.JTextField();
        caixaCargaHoraria = new javax.swing.JTextField();
        this.setLayout(null);
        caixaCodigoDisciplina = new javax.swing.JLabel();
        checagemNome = new javax.swing.JLabel();
        checagemSala = new javax.swing.JLabel();
        checagemCarga = new javax.swing.JLabel();
        

        jLabel1.setFont(new java.awt.Font("Arial",0,48));
        jLabel1.setText("Cadastra disciplina");
        {
        	buttonCancelar = new JButton();
        	buttonCancelar.setText("CANCELAR");
        	buttonCancelar.setBackground(new java.awt.Color(255,255,255));
        	buttonCancelar.setPreferredSize(new java.awt.Dimension(14, 7));
        	buttonCancelar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
        	buttonCancelar.setSize(112, 25);
        	buttonCancelar.setBounds(644, 539, 103, 30);
        }
        {
        	buttonLimpar = new JButton();
        	buttonLimpar.setText("LIMPAR");
        	buttonLimpar.setBackground(new java.awt.Color(255,255,255));
        	buttonLimpar.setPreferredSize(new java.awt.Dimension(14, 7));
        	buttonLimpar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
        	buttonLimpar.setSize(112, 25);
        	buttonLimpar.setBounds(507, 539, 103, 30);
        	buttonLimpar.addMouseListener(new MouseAdapter() {
        		public void mouseClicked(MouseEvent evt) {
        			buttonLimparMouseClicked(evt);
        		}
        	});
        }
        {
        	buttonCadastrar = new JButton();
        	this.add(buttonCadastrar);
        	this.add(buttonLimpar);
        	this.add(buttonCancelar);
        	buttonCancelar.addMouseListener(new MouseAdapter() {
        		public void mouseClicked(MouseEvent evt) {
        			buttonCancelarMouseClicked(evt);
        		}
        	});
        	this.add(caixaCodigoDisciplina);
        	this.add(jLabel5);
        	this.add(caixaCargaHoraria);
        	this.add(jLabel4);
        	this.add(checagemCarga);
        	this.add(checagemSala);
        	this.add(caixaCodigoSala);
        	this.add(jLabel3);
        	this.add(checagemNome);
        	this.add(caixaNome);
        	this.add(jLabel2);
        	this.add(jLabel1);
        	jLabel1.setBounds(169, 26, 407, 62);
        	jLabel1.setForeground(new java.awt.Color(0,102,102));
        	buttonCadastrar.setText("CADASTRAR");
        	buttonCadastrar.setBackground(new java.awt.Color(255,255,255));
        	buttonCadastrar.setPreferredSize(new java.awt.Dimension(14, 7));
        	buttonCadastrar.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
        	buttonCadastrar.setSize(112, 25);
        	buttonCadastrar.setBounds(370, 539, 103, 30);
        	buttonCadastrar.addMouseListener(new MouseAdapter() {
        		public void mouseClicked(MouseEvent evt) {
        			try {
						buttonCadastrarMouseClicked(evt);
					} catch (Exception e) {
						e.printStackTrace();
					}
        		}
        	});
        }

        jLabel2.setFont(new java.awt.Font("Arial",0,22)); // NOI18N
        jLabel2.setText("Nome da disciplina");
        jLabel2.setForeground(new java.awt.Color(0,102,102));
        jLabel2.setBounds(17, 165, 186, 29);

        jLabel3.setFont(new java.awt.Font("Arial",0,22)); // NOI18N
        jLabel3.setText("Codigo da sala");
        jLabel3.setForeground(new java.awt.Color(0,102,102));
        jLabel3.setBounds(55, 216, 148, 29);

        jLabel4.setFont(new java.awt.Font("Arial",0,22)); // NOI18N
        jLabel4.setText("Carga horaria");
        jLabel4.setForeground(new java.awt.Color(0,102,102));
        jLabel4.setBounds(67, 270, 136, 29);

        jLabel5.setFont(new java.awt.Font("Arial",0,22));
        jLabel5.setText("Codigo da disciplina");
        jLabel5.setForeground(new java.awt.Color(0,102,102));
        jLabel5.setBounds(12, 324, 199, 29);

        caixaNome.setFont(new java.awt.Font("Tahoma",0,18)); // NOI18N
        caixaNome.setForeground(new java.awt.Color(102,102,102));
        caixaNome.setBounds(231, 165, 476, 32);
        caixaNome.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                caixaNomeKeyReleased(evt);
            }
        });

        caixaCodigoSala.setFont(new java.awt.Font("Tahoma",0,18)); // NOI18N
        caixaCodigoSala.setForeground(new java.awt.Color(102,102,102));
        caixaCodigoSala.setSize(476, 35);
        caixaCodigoSala.setBounds(231, 218, 476, 32);
        caixaCodigoSala.addKeyListener(new KeyAdapter() {
        	public void keyReleased(KeyEvent evt) {
        		caixaCodigoSalaKeyReleased(evt);
        	}
        });

        caixaCargaHoraria.setFont(new java.awt.Font("Tahoma",0,18)); // NOI18N
        caixaCargaHoraria.setForeground(new java.awt.Color(102,102,102));
        caixaCargaHoraria.setBounds(231, 270, 476, 35);
        caixaCargaHoraria.addKeyListener(new KeyAdapter() {
        	public void keyReleased(KeyEvent evt) {
        		caixaCargaHorariaKeyReleased(evt);
        	}
        });

        caixaCodigoDisciplina.setBackground(new java.awt.Color(255, 255, 255));
        caixaCodigoDisciplina.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
        caixaCodigoDisciplina.setText(" ");
        caixaCodigoDisciplina.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        caixaCodigoDisciplina.setOpaque(true);
        caixaCodigoDisciplina.setBounds(231, 323, 192, 31);

        checagemNome.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        checagemNome.setBounds(715, 172, 69, 17);
        checagemNome.setText(" ");

        checagemSala.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        checagemSala.setBounds(715, 222, 69, 17);
        checagemSala.setText(" ");

        checagemCarga.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        checagemCarga.setText(" ");
        checagemCarga.setBounds(715, 279, 69, 17);

        this.setSize(800, 600);
        this.setBackground(new java.awt.Color(204,204,255));
    }// </editor-fold>                        

    private void caixaNomeKeyReleased(java.awt.event.KeyEvent evt) {                                      
        nomeDisciplina = caixaNome.getText();
        if(nomeDisciplina.equals("")){
        	checagemNome.setText("");
            flag = false;
        }if(Validadores.validaNome(nomeDisciplina)){
        	checagemNome.setText("OK");
        	checagemNome.setForeground(verde);
        	flag = true;
        }else{
        	checagemNome.setForeground(Color.red);
        	flag = false;
        }
    }                                     
    
    private void caixaCodigoSalaKeyReleased(KeyEvent evt) {
    	String stringCodigoSala = caixaCodigoSala.getText();
    	Pattern padrao = Pattern.compile("[0-9]*");
        Matcher meta = padrao.matcher(stringCodigoSala);
    	if(stringCodigoSala.equals("")){
    		checagemSala.setText("");
    		flag = true;
    	}else if(meta.matches() && Integer.parseInt(stringCodigoSala)>0){
    		checagemSala.setForeground(verde);
    		checagemSala.setText("OK");
    		codigoSala = Integer.parseInt(stringCodigoSala);
    		flag = true;
    	}else{
    		checagemSala.setForeground(verde);
    		checagemSala.setText(stringCodigoSala);
    		flag = false;
    	}
    }
    
    private void caixaCargaHorariaKeyReleased(KeyEvent evt) {
    	String stringCarga = caixaCargaHoraria.getText();
    	cargaHoraria = Integer.parseInt(stringCarga);
    }
    
    private void buttonCadastrarMouseClicked(MouseEvent evt) throws Exception {
    	String codigo = Validadores.geraCodigoDisciplina(GerenciadorDeJanelas.todasDisciplinas);
    	if(flag == false){
    		JOptionPane.showMessageDialog(null, "Algum dado invalido");
    	}else{
    		if(salaExiste(codigoSala)){
    			Disciplina disciplina = new Disciplina(nomeDisciplina, sala, cargaHoraria,codigo);
    			GerenciadorDeJanelas.todasDisciplinas.add(disciplina);
    			
    			String xml = GerenciadorDeJanelas.ARQUIVADOR.toXML(GerenciadorDeJanelas.todasDisciplinas);
    			GerenciadorDeJanelas.gravar(GerenciadorDeJanelas.arquivoDeDisciplinas,xml);
    			
    			GerenciadorDeJanelas.window.setVisible(false);
    	        GerenciadorDeJanelas.window.setContentPane(GerenciadorDeJanelas.menuCadastra);
    	        GerenciadorDeJanelas.window.setVisible(true);
    	        
    		}else{
    			JOptionPane.showMessageDialog(null, "Sala nao existe. Voce pode cadastrar a sala depois.");
    			
    			Disciplina disciplina = new Disciplina(nomeDisciplina, null, cargaHoraria,codigo);
    			GerenciadorDeJanelas.todasDisciplinas.add(disciplina);
    			
    			String xml = GerenciadorDeJanelas.ARQUIVADOR.toXML(GerenciadorDeJanelas.todasDisciplinas);
    			GerenciadorDeJanelas.gravar(GerenciadorDeJanelas.arquivoDeDisciplinas,xml);
    			
    			GerenciadorDeJanelas.window.setVisible(false);
    	        GerenciadorDeJanelas.window.setContentPane(GerenciadorDeJanelas.menuCadastra);
    	        GerenciadorDeJanelas.window.setVisible(true);
    		}
    		
    	}
    }
    
    private void buttonCancelarMouseClicked(MouseEvent evt) {
    	limpar();
    	GerenciadorDeJanelas.window.setVisible(false);
        GerenciadorDeJanelas.window.setContentPane(GerenciadorDeJanelas.menuCadastra);
        GerenciadorDeJanelas.window.setVisible(true);
    }
    
    private void limpar(){
    	for(Component component: this.getComponents()){
            if(component instanceof JTextField){
                JTextField caixa = (JTextField)component;
                caixa.setText("");
            }
        }
    	checagemCarga.setText("");
    	checagemNome.setText("");
    	checagemSala.setText("");
    }
    
    private void buttonLimparMouseClicked(MouseEvent evt) {
    	limpar();
    }
    
    private boolean salaExiste(int codigoSala){
    	if(GerenciadorDeJanelas.todasSalas.size()<=0){
    		return false;
    	}else{
    		for(Sala sala2:GerenciadorDeJanelas.todasSalas){
    			if(sala2.getNumeroDeIdentificacao() == codigoSala){
    				sala = sala2;
    				return true;
    			}
    		}
    		return false;
    	}
    }

    // Variables declaration - do not modify                     
    private javax.swing.JTextField caixaCargaHoraria;
    private javax.swing.JLabel caixaCodigoDisciplina;
    private javax.swing.JTextField caixaCodigoSala;
    private javax.swing.JTextField caixaNome;
    private javax.swing.JLabel checagemCarga;
    private javax.swing.JLabel checagemNome;
    private javax.swing.JLabel checagemSala;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private JButton buttonCadastrar;
    private JButton buttonLimpar;
    private JButton buttonCancelar;
    // End of variables declaration                   

}
